
package org.onvif.ver10.schema;

import java.util.HashMap;
import java.util.Map;
import javax.xml.namespace.QName;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAnyAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
import org.xmlsoap.schemas.soap.envelope.Envelope;
import org.xmlsoap.schemas.soap.envelope.Fault;


/**
 * Action Engine Event Payload data structure contains the information about the ONVIF command invocations. Since this event could be generated by other or proprietary actions, the command invocation specific fields are defined as optional and additional extension mechanism is provided for future or additional action definitions.
 * 
 * <p>ActionEngineEventPayload complex type的 Java 类。</p>
 * 
 * <p>以下模式片段指定包含在此类中的预期内容。</p>
 * 
 * <pre>{@code
 * <complexType name="ActionEngineEventPayload">
 *   <complexContent>
 *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       <sequence>
 *         <element name="RequestInfo" type="{http://schemas.xmlsoap.org/soap/envelope/}Envelope" minOccurs="0"/>
 *         <element name="ResponseInfo" type="{http://schemas.xmlsoap.org/soap/envelope/}Envelope" minOccurs="0"/>
 *         <element name="Fault" type="{http://schemas.xmlsoap.org/soap/envelope/}Fault" minOccurs="0"/>
 *         <element name="Extension" type="{http://www.onvif.org/ver10/schema}ActionEngineEventPayloadExtension" minOccurs="0"/>
 *       </sequence>
 *       <anyAttribute processContents='lax'/>
 *     </restriction>
 *   </complexContent>
 * </complexType>
 * }</pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ActionEngineEventPayload", propOrder = {
    "requestInfo",
    "responseInfo",
    "fault",
    "extension"
})
public class ActionEngineEventPayload {

    /**
     * Request Message
     * 
     */
    @XmlElement(name = "RequestInfo")
    protected Envelope requestInfo;
    /**
     * Response Message
     * 
     */
    @XmlElement(name = "ResponseInfo")
    protected Envelope responseInfo;
    /**
     * Fault Message
     * 
     */
    @XmlElement(name = "Fault")
    protected Fault fault;
    @XmlElement(name = "Extension")
    protected ActionEngineEventPayloadExtension extension;
    @XmlAnyAttribute
    private Map<QName, String> otherAttributes = new HashMap<>();

    /**
     * Request Message
     * 
     * @return
     *     possible object is
     *     {@link Envelope }
     *     
     */
    public Envelope getRequestInfo() {
        return requestInfo;
    }

    /**
     * 设置requestInfo属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Envelope }
     *     
     * @see #getRequestInfo()
     */
    public void setRequestInfo(Envelope value) {
        this.requestInfo = value;
    }

    /**
     * Response Message
     * 
     * @return
     *     possible object is
     *     {@link Envelope }
     *     
     */
    public Envelope getResponseInfo() {
        return responseInfo;
    }

    /**
     * 设置responseInfo属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Envelope }
     *     
     * @see #getResponseInfo()
     */
    public void setResponseInfo(Envelope value) {
        this.responseInfo = value;
    }

    /**
     * Fault Message
     * 
     * @return
     *     possible object is
     *     {@link Fault }
     *     
     */
    public Fault getFault() {
        return fault;
    }

    /**
     * 设置fault属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Fault }
     *     
     * @see #getFault()
     */
    public void setFault(Fault value) {
        this.fault = value;
    }

    /**
     * 获取extension属性的值。
     * 
     * @return
     *     possible object is
     *     {@link ActionEngineEventPayloadExtension }
     *     
     */
    public ActionEngineEventPayloadExtension getExtension() {
        return extension;
    }

    /**
     * 设置extension属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link ActionEngineEventPayloadExtension }
     *     
     */
    public void setExtension(ActionEngineEventPayloadExtension value) {
        this.extension = value;
    }

    /**
     * Gets a map that contains attributes that aren't bound to any typed property on this class.
     * 
     * <p>
     * the map is keyed by the name of the attribute and 
     * the value is the string value of the attribute.
     * 
     * the map returned by this method is live, and you can add new attribute
     * by updating the map directly. Because of this design, there's no setter.
     * 
     * 
     * @return
     *     always non-null
     */
    public Map<QName, String> getOtherAttributes() {
        return otherAttributes;
    }

}
